﻿#pragma once

#include "precomp.h"

class GlobalState{
public:
	// Опции изображения
	CL_Rectf game_field; // Действенная область игры
	CL_Rectf render_field; // Область вывода
	CL_Rectf clip_rect; // Реальная область вывода игрового поля для текущего размера окна
	CL_Rectf bg_rect; // Область вывода фона
	CL_Sizef render_size;
	CL_Sizef game_size;
	CL_Size screen_size;
	CL_Size window_size;
	bool fullscreen;
	float scale;
	CL_Vec2<float> translate;

	// Опции игры
	int game_state; // Глобальное состояние
	int next_state; // На какое состояние переключиться после отработки перехода
	int game_paused; // Включена пауза
	int game_dialog; // Активен диалог поверх игрового поля
	int game_boss_battle; // В процессе битвы с боссом
	int game_boss_spellcard_active; // Босс запустил спеллкарту
	int game_over; // Игра завершена, висит диалог продолжения
	int game_level_end; // Уровень завершён, ожидается вывод экрана статистики
	char mask_color; // Цвет маски затемнения
	int lang; // Язык игры: 0 - русский, 1 - японский
	int current_level; // Текущий уровень
	int difficulty; // Текущая сложность: 0 - easy; 1 - normal etc.
	float speed_dif; // Коэффициент скорости пуль: easy = 0.8 , normal = 1 , hard = 1.2 , lunatic = 1.5
	int player_lives;
	int player_continues;
	int shotslow; // режим включения фокуса во время стрельбы

	unsigned int version;

	int is_extra_available; // открыт ли экстра-уровень orz

	// Статистика
	unsigned int hi_score;
	unsigned int current_level_score;
	unsigned int time_collected;
	unsigned int bullets_launched;
	unsigned int bullets_blowed;

	// Настраиваемые опции игры
	bool music_on;
	int sfx_volume;
	int music_volume;
	float sfx_vol;
	float music_vol;

	float master_vol;

	// Опции настроек управления
	float axis_sens;
	int key_fire;
	int key_bomb; // кнопка активации спеллкарты
	int key_focus;
	int key_spell; // кнопка смены активной спеллкарты
	int key_pause;
	int key_skip;

	// Опции течения времени
	float time_processed; // сколько прошло времени с начала работы текущего блока
	float time_to_work; // сколько времени работать текущему блоку
	float time_paused; // время паузы
};

extern GlobalState global_state;
